package cn.xy.commons.enums;


import cn.xy.commons.validator.VerifiedEnum;

/**
 * @author lixue
 */

public enum YesNoStatus implements VerifiedEnum {
    /**
     * YES。
     */
    YES("Y", "是"),

    /**
     * NO。
     */
    NO("N", "否");

    private final String value;

    private final String text;

    YesNoStatus(String val, String txt) {
        value = val;
        text = txt;
    }

    public static String isTrue(Boolean value) {
        return value != null && value ? YES.getValue() : NO.getValue();
    }

    public static String getNameByValue(String value) {
        for (YesNoStatus status : YesNoStatus.values()) {
            if (value.equals(status.getValue())) {
                return status.getText();
            }
        }
        return "";
    }

    /**
     * @return 当前枚举对象的值。
     */
    public String getValue() {
        return value;
    }

    /**
     * @return 当前状态的中文描述。
     */
    public String getText() {
        return text;
    }

    public static boolean isYes(String value) {
        return YES.getValue().equals(value);
    }

    public static boolean isNo(String value) {
        return !YesNoStatus.isYes(value);
    }

    public static String yesOrNo(String value) {
        if (value == null) {
            return NO.getValue();
        }
        return value.equals(YES.getValue()) ? YES.getValue() : NO.getValue();
    }

    /**
     * 获取相反值，默认返还N
     *
     * @param value Y/N
     * @return result
     */
    public static String negate(String value) {
        if (value == null) {
            return NO.getValue();
        }
        return value.equals(YES.getValue()) ? NO.getValue() : YES.getValue();
    }

    @Override
    public Object getVerifiedValue() {
        return this.value;
    }
}
